﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using WebApplication1;

namespace WebService
{
    public class Conexao
    {


        string conexao = @"Data Source=RAMON\RAMON;Initial Catalog=SMARTCAR;Integrated Security=True";

        public SqlCommand Conectar()
        {

            SqlConnection conn = new SqlConnection(conexao);
            conn.Open();
            SqlCommand comando = conn.CreateCommand();
            return comando;

        }

        public void Desconectar()
        {

            SqlConnection conn = new SqlConnection(conexao);
            conn.Close();


        }

        public List<Produto> AddProduto(Produto produto)
        {

            SqlCommand comando = Conectar();

            comando.CommandText = "select COD_PRODUTO, NOME_PRODUTO,DESCRICAO_PRODUTO, VALOR_UNIT  FROM PRODUTO WHERE COD_PRODUTO = " + produto.Codigo;
            int linhas = comando.ExecuteNonQuery();

            SqlDataReader reader = comando.ExecuteReader();
            List<Produto> lista = new List<Produto>();

            while (reader.Read())
            {
                Produto p = new Produto();
                p.Codigo = reader.GetInt32(reader.GetOrdinal("COD_PRODUTO"));
                p.Nome = reader.GetString(reader.GetOrdinal("NOME_PRODUTO"));
                p.Descricao = reader.GetString(reader.GetOrdinal("DESCRICAO_PRODUTO"));
                p.ValorUnit = float.Parse(reader.GetString(reader.GetOrdinal("VALOR_UNIT")));
                lista.Add(p);
            }



            Desconectar();
            if (lista.Count == 0)
            {

                throw new Exception("não há produtos com esse código");
            }

            return lista;

        }
        public Cliente efetuarLogin(Cliente cliente)
        {

            SqlCommand comando = Conectar();
            comando.CommandText = "select COD_CLIENTE,NOME,CPF,RG,EMAIL,TELEFONE FROM CLIENTE  WHERE EMAIL = '" + cliente.EMail + "' and RG = '" + cliente.Rg + "'";
            comando.ExecuteNonQuery();

            SqlDataReader reader = comando.ExecuteReader();
            Cliente c = new Cliente();
            while (reader.Read())
            {

                c.Codigo = reader.GetInt32(reader.GetOrdinal("COD_CLIENTE"));
                c.Nome = reader.GetString(reader.GetOrdinal("NOME"));
                c.Cpf = reader.GetString(reader.GetOrdinal("CPF"));
                c.EMail = reader.GetString(reader.GetOrdinal("EMAIL"));
                c.Rg = reader.GetString(reader.GetOrdinal("RG"));
                c.Telefone = reader.GetString(reader.GetOrdinal("TELEFONE"));
            }
            if (c.EMail != cliente.EMail && c.Rg != cliente.Rg)
            {
                throw new Exception("login ou senha incorretos");
            }
            return c;
        }



        public void RealizarCompra(Compra compra)
        {
           
            SqlCommand comando = Conectar();
            comando.CommandText = "INSERT INTO compra(total, id_cliente) values('" + compra.ValorTotal + "'," + compra.Cliente.Codigo + ")";
            comando.ExecuteNonQuery();
            
            Desconectar();
         
            
        
        }



            public void InserirProdutos (Compra compra){

                SqlCommand comando = Conectar();
                
                for (int i = 0; i < compra.Produtos.Count; i++)
                {
                    comando.CommandText = "insert into PRODUTO_COMPRA(ID_PRODUTO,ID_COMPRA) values(" + compra.Produtos[i].Codigo + ","+compra.Codigo+")";
                    comando.ExecuteNonQuery();

                }
                Desconectar();
       

    
           }


            public int  PegaCodigo() {

                SqlCommand comando = Conectar();
                comando.CommandText = "select * from COMPRA where COD_COMPRA in ( select MAX(COD_COMPRA) from COMPRA group by COD_COMPRA)";
                comando.ExecuteNonQuery();
                SqlDataReader reader = comando.ExecuteReader();
                Compra c = new Compra();
                while (reader.Read())
                {

                    c.Codigo = reader.GetInt32(reader.GetOrdinal("COD_COMPRA"));
                }

                return c.Codigo;
            
            
            }

            public void cadastrarCliente(Cliente cliente)
            {
                SqlCommand comando = Conectar();
                comando.CommandText = "insert into cliente(nome,cpf,rg,email, telefone) values('" + cliente.Nome + "', '" + cliente.Cpf + "', '" + cliente.Rg + "', '" + cliente.EMail + "', '" + cliente.Telefone + "')";
                comando.ExecuteNonQuery();
                SqlDataReader reader = comando.ExecuteReader();
            }
        }   
        
    
    }
